package com.example.employeemanagement.service;

import com.example.employeemanagement.dto.DepartmentSalaryDto;
import com.example.employeemanagement.dto.PerformanceTrendDto;
import com.example.employeemanagement.dto.PositionSalaryDto;
import com.example.employeemanagement.dto.SalaryRangeDto;
import com.example.employeemanagement.dto.dashboard.*;

import java.util.List;

/**
 * 数据大屏服务接口
 */
public interface DashboardService {

    /**
     * 获取员工总数
     */
    int getEmployeeCount();

    /**
     * 获取本月新增员工数
     */
    int getNewEmployeeCount();

    /**
     * 获取员工部门分布
     */
    List<DepartmentDistributionDto> getDepartmentDistribution();

    /**
     * 获取员工职位分布
     */
    List<PositionDistributionDto> getPositionDistribution();

    /**
     * 获取考勤状态统计
     */
    List<AttendanceStatusDto> getAttendanceStatus();

    /**
     * 获取每日考勤趋势
     */
    List<AttendanceTrendDto> getAttendanceTrend();
    
    /**
     * 获取指定日期范围内的每日考勤趋势
     * @param startDate 开始日期
     * @param endDate 结束日期
     */
    List<AttendanceTrendDto> getAttendanceTrend(String startDate, String endDate);

    /**
     * 获取部门考勤对比
     */
    List<AttendanceTrendDto> getDepartmentAttendance();

    /**
     * 获取绩效分数分布
     */
    PerformanceScoreDto getPerformanceScore();

    /**
     * 获取部门平均绩效
     */
    List<DepartmentPerformanceDto> getDepartmentPerformance();
    
    /**
     * 获取指定年份和季度的部门平均绩效
     * @param year 年份
     * @param quarter 季度（1-4）
     */
    List<DepartmentPerformanceDto> getDepartmentPerformance(Integer year, Integer quarter);

    /**
     * 获取绩效趋势
     */
    List<PerformanceTrendDto> getPerformanceTrend();

    /**
     * 获取薪资区间分布
     */
    List<SalaryRangeDto> getSalaryDistribution();

    /**
     * 获取部门平均薪资
     */
    List<DepartmentSalaryDto> getDepartmentSalary();

    /**
     * 获取职位平均薪资
     */
    List<PositionSalaryDto> getPositionSalary();
}